/*! \file methodvisitor.h
	\author HiddenSeker

	Declares a visitor, that visits methods and nodes
 */
#include "parentdata.h"
#pragma once

class MethodVisitor
{
private:
		ParentData  m_data;
public:
		inline ParentData * data()  
		{
			return &m_data;
		}
		inline MethodVisitor()
		{
			
		}
		/*! Action, that is performed on visiting field
		 */
		virtual void visitField()=0;
		/*! Action, performed after visiting class
		 */
		virtual void postVisitClass()=0;
		/*! A method used by class
		 */
		virtual void visitClass()=0;
		/*! A method used by methods
		 */
		virtual void visitMethod()=0;
		/*! Action, performed befor visiting methods 
		 */
		virtual void preMethods();
		/*! Action, performed before visiting fields 
		 */
		virtual void preFields();

		~MethodVisitor();
};

